package com.itheima.socket.tcp.demo12;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerDemo01 {

    public static void main(String[] args) throws IOException {

        // 1. 创建ServerSocket对象
        ServerSocket serverSocket = new ServerSocket(8080) ;

        // 就是让我们的服务端不断的去监听客户端的请求
        while(true) {

            // 2. 监听客户端
            Socket socket = serverSocket.accept();

            // 3. 获取输入流对象
            InputStream inputStream = socket.getInputStream();

            // 4. 创建一个高效的字节输出流对象
            BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream("F:\\a.avi")) ;

            // 5. 读取数据，写数据
            byte[] bytes = new byte[1024] ;
            int len = -1 ;

            // 这个read方法是一个阻塞方法，当我们通道中没有数据了，这个方法一直是阻塞的，等待我们客户端进行传递数据
            while((len = inputStream.read(bytes)) != -1) {
                bufferedOutputStream.write(bytes , 0 , len);
            }

            // 获取输出流对象写数据
            OutputStream outputStream = socket.getOutputStream();
            outputStream.write("OK,上传成功了!".getBytes("UTF-8"));

            // 6. 资源的释放
            bufferedOutputStream.close();
            socket.close();

        }

    }

}
